home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
010
/
concentr.bas
< prev
next >
Wrap
BASIC Source File
|
1988-11-09
|
6KB
|
169 lines
1 ' **********************************************************
2 '
3 ' This program plays the game of concentration.
4 ' There are 12 possible levels of difficulty.
5 ' The program can handle from 1 to 6 players.
6 ' - programmed by Anne Taft
7 '
8 ' *********************************************************
10 CLS
12 OPTION BASE 1
14 DEFINT X
16 DIM XUSED(52),XSCORE(6)
18 DIM T$(52),CARD$(52),P$(6)
100 REM ******** initialize game *************
150 GOSUB 1400 ' # of players & skill level
190 RESTORE 300
200 FOR X = 1 TO XNL
210 READ N$
220 CARD$(X) = N$ + CHR$(3)
230 CARD$(X+XNL) = N$ + CHR$(4)
240 CARD$(X+(2*XNL)) = N$ + CHR$(5)
250 CARD$(X+(3*XNL)) = N$ + CHR$(6)
260 NEXT X
270 FOR X = 1 TO XN
280 XUSED(X) = 0
290 NEXT X
300 DATA " A"," 2"," 3"," 4"," 5"," 6"," 7"," 8"," 9","10"," J"," Q"," K"
310 FOR XX = 1 TO 2
320 N = VAL(MID$(TIME$,7,2))
330 RANDOMIZE N
340 REM ****** SHUFFLE AND DEAL ******
350 FOR X = 1 TO (XN-1)
360 XL = INT((XN+1-X)*RND(1)+1)
370 SWAP CARD$(X) , CARD$(XL+X-1)
380 NEXT X
390 NEXT XX
395 RESTORE 440
400 FOR X = 1 TO XN
410 READ N$
420 T$(X) = N$
430 NEXT X
440 DATA " 1 "," 2 "," 3 "," 4 "," 5 "," 6 "," 7 "," 8 "," 9 "," 10"," 11"," 12"
450 DATA " 13"," 14"," 15"," 16"," 17"," 18"," 19"," 20"," 21"," 22"," 23"," 24"
460 DATA " 25"," 26"," 27"," 28"," 29"," 30"," 31"," 32"," 33"," 34"," 35"," 36"
470 DATA " 37"," 38"," 39"," 40"," 41"," 42"," 43"," 44"," 45"," 46"," 47"," 48"
480 DATA " 49"," 50"," 51"," 52"
490 INPUT "Press RETURN to start the game", N$
500 FOR X=1 TO XPN: XSCORE(X) = 0:NEXT X
505 XSUM = 0
510 MATCH = 0
512 XT = 1
520 XTURN = 0
530 REM *********** START OF MAJOR LOOP *************************
535 XTURN = XTURN + 1
540 GOSUB 1120 'DISPLAY ROUTINE
550 IF XPN=1 THEN PRINT ELSE PRINT P$(XT);"'S TURN:"
560 INPUT "First card selected: ",XTRY1
570 IF XTRY1 < 1 THEN GOTO 600
580 IF XTRY1 > XN THEN GOTO 600
590 GOTO 620
600 PRINT "Please choose a card number between 1 and ";XN;"."
610 GOTO 560
620 FOR X = 1 TO XN
630 IF XTRY1 =XUSED(X) GOTO 660
640 NEXT X
650 GOTO 690
660 PRINT "The card you have chosen has already been matched."
670 PRINT "Please choose another card."
680 GOTO 560
690 INPUT "Second card selected: ",XTRY2
700 IF XTRY2 < 1 THEN GOTO 760
710 IF XTRY2 > XN THEN GOTO 760
720 IF XTRY2 <> XTRY1 THEN GOTO 780
730 PRINT "That card was your first selection."
740 PRINT "Please choose a different card."
750 GOTO 690
760 PRINT "Please choose a card number between 1 and ";XN;"."
770 GOTO 690
780 FOR X = 1 TO XN
790 IF XTRY2 = XUSED(X) THEN GOTO 820
800 NEXT X
810 GOTO 850
820 PRINT "The card you have chosen has already been matched."
830 PRINT "Please choose another card."
840 GOTO 690
850 IF LEFT$(CARD$(XTRY1),2) = LEFT$(CARD$(XTRY2),2) THEN MATCH = 1
860 TEMP1$ = T$(XTRY1)
870 T$(XTRY1) = CARD$(XTRY1)
880 TEMP2$ = T$(XTRY2)
890 T$(XTRY2) = CARD$(XTRY2)
900 GOSUB 1120 'DISPLAY ROUTINE
910 IF MATCH = 0 GOTO 915
912 PRINT: PRINT " GOOD! You have a match!"
915 REM
925 IF LEFT$(N$,1) = "0" GOTO 1010
930 IF MATCH = 1 GOTO 960
940 T$(XTRY1) = TEMP1$
950 T$(XTRY2) = TEMP2$
960 REM
970 IF MATCH=1 THEN XSCORE(XT)=XSCORE(XT)+1: XSUM=XSUM+1
980 IF MATCH = 1 THEN XUSED((2*XSUM)-1) = XTRY1
990 IF MATCH = 1 THEN XUSED(2*XSUM) = XTRY2
995 XT=XT+1:IF XT>XPN THEN XT=1 ' WHO'S NEXT?
1000 MATCH = 0
1001 PRINT: PRINT
1002 INPUT "Strike RETURN to continue, 0 to quit: ",N$
1003 IF (2*XSUM) >= XN GOTO 1010
1004 IF LEFT$(N$,1) = "0" GOTO 1010
1005 GOTO 530
1010 REM *************END OF MAJOR LOOP*****************************
1020 GOSUB 1300 ' scoring routine
1030 INPUT "Do you want to play another game now? ", N$
1040 A$ = LEFT$(N$,1)
1050 IF A$ = "Y" GOTO 100
1060 IF A$ = "y" GOTO 100
1070 IF A$ = "N" GOTO 1220
1080 IF A$ = "n" GOTO 1220
1090 PRINT "Please answer yes or no:"
1100 GOTO 1030
1110 REM **********DISPLAY ROUTINE**************************
1120 GOSUB 1250 'CLS AND PRINT HEADING
1130 XTAB = (77-5*(XNL-1))\2
1150 FOR XR = 0 TO 3
1160 PRINT: PRINT: PRINT TAB(XTAB);
1170 FOR X = 1 TO XNL
1180 PRINT T$(X+(XR*XNL));SPACE$(2);
1190 NEXT X
1200 NEXT XR
1205 PRINT
1210 RETURN
1215 REM **********END OF PROGRAM*************************
1220 PRINT "Goodbye. "
1230 END
1250 REM ********CLEAR SCREEN & PRINT HEADING ************
1260 CLS:PRINT:PRINT:PRINT TAB(33);"CONCENTRATION"
1270 PRINT:PRINT:RETURN
1300 REM *********** FINAL SCORING ************************
1310 GOSUB 1250
1320 IF XPN > 1 THEN GOTO 1350
1330 PRINT TAB(10);"Your score is ";XSCORE(1);" matches in ";XTURN;" tries."
1340 PRINT: RETURN
1350 FOR X = 1 TO XPN
1360 PRINT TAB(10);"Score of ";P$(X);" is ";XSCORE(X);" matches."
1370 PRINT: NEXT X
1380 RETURN
1400 REM ***** selection of no. of players and skill level ******
1410 GOSUB 1250 'CLS and print heading
1420 INPUT "From 1 to 6 players may play. How many this time? ",XPN
1430 IF XPN = 1 THEN GOTO 1500
1440 IF (XPN>6)OR(XPN<1) GOTO 1410
1450 FOR X = 1 TO XPN
1460 PRINT:PRINT "Name of player # ";X:INPUT " : ",P$(X)
1470 NEXT X
1500 REM *** skill level ***
1510 GOSUB 1250 'CLS and print heading
1520 PRINT "You can play at any one of 12 different levels of skill."
1540 PRINT TAB(10);"B - Beginner - easy";TAB(40);"6 - Intermediate"
1550 PRINT TAB(10);"1";TAB(40);"7"
1560 PRINT TAB(10);"2";TAB(40);"8 - Advanced Intermediate"
1570 PRINT TAB(10);"3 - Advanced Beginner";TAB(40);"9"
1580 PRINT TAB(10);"4";TAB(40);"A - Advanced"
1590 PRINT TAB(10);"5";TAB(40);"E - Expert"
1600 PRINT:INPUT "Please select a skill level for this game: ",XL$
1610 XNL = INSTR(2," B123456789AE",XL$)
1620 IF XNL = 0 THEN GOTO 1500 ELSE XN = 4*XNL
1650 RETURN
for this game: ",XL$
1610 XNL = INSTR(2," B123456789AE",XL$)
1620 IF XNL = 0